// ==============================================================================
// | 包: main                                                                  |
// | 功能: Redis JWT黑名单测试程序                                             |
// | 说明: 测试JWT令牌的生成、加入黑名单和检查黑名单状态的功能                  |
// ==============================================================================
package main

import (
	"blog_server/core"                 // 核心初始化包
	"blog_server/flags"                // 命令行参数包
	"blog_server/global"               // 全局变量包
	"blog_server/service/redis_service/redis_jwt" // JWT黑名单服务
	"blog_server/utils/jwts"           // JWT工具包
	"fmt"                              // 格式化输出包
)

// ==============================================================================
// | 函数: main                                                                |
// | 功能: 主函数，测试JWT黑名单功能                                           |
// |----------------------------------------------------------------------------|
// | 流程:                                                                     |
// | 1. 初始化系统配置                                                          |
// | 2. 生成测试JWT令牌                                                        |
// | 3. 将令牌加入黑名单                                                       |
// | 4. 检查令牌是否在黑名单中                                                 |
// ==============================================================================
func main() {
	// 解析命令行参数
	flags.Parse()
	// 读取配置文件
	global.Config = core.ReadConf()
	// 初始化日志系统
	core.InitLogrus()
	// 初始化Redis连接
	global.Redis = core.InitRedis()

	// 生成测试JWT令牌，用户ID=2，角色=1
	token, err := jwts.GetToken(jwts.Claims{
		UserID: 2, // 用户ID
		Role:   1, // 用户角色
	})
	// 打印生成的令牌和错误信息
	fmt.Println(token, err)
	// 将令牌加入黑名单，类型为用户主动注销
	redis_jwt.TokenBlack(token, redis_jwt.UserBlackType)

	// 检查令牌是否在黑名单中
	blk, ok := redis_jwt.HasTokenBlack(token)
	// 打印黑名单检查结果
	fmt.Println(blk, ok)
}
